package com.loiot.baqi.pojo;

import java.util.Set;
import java.util.TreeSet;

import lombok.Data;
import lombok.EqualsAndHashCode;

import com.loiot.baqi.constant.DictionaryUtil;
import com.loiot.baqi.status.DictionaryType;
import com.loiot.baqi.status.ImportStatus;
import com.loiot.baqi.status.JoinStatus;
import com.loiot.baqi.status.KickStatus;

/**
 * QQ群_用户 关系实体类.
 * 
 * @author wangzx
 * @creation 2016-03-21
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class WeiAccountQqGroup implements java.io.Serializable {
	private static final long serialVersionUID = 5454155825314635342L;

	private java.lang.Long id; // id db_column: id
	private java.lang.Long accountId; // 所属用户 db_column: account_id
	private java.lang.Long groupId; // 群id db_column: group_id
	private Integer addStatus; // 添加状态，默认待添加 db_column: add_status
	private java.util.Date addStatusTime; // 已通过的时间，或未通过的时间，默认为null db_column:
											// add_status_time
	private java.lang.String addNoPassReason; // 添加群未通过的原因 db_column:
												// add_no_pass_reason
	private Integer importStatus; // 导入状态，默认未导入 db_column: import_status
	private java.util.Date importTime; // 导入成员时间，默认为null db_column: import_time
	private Integer isKick; // 是否被踢，默认未被踢 db_column: is_kick
	private java.util.Date kickTime; // 被踢时间 db_column: kick_time
	private java.lang.String kickReason; // 被踢的原因 db_column: kick_reason
	private java.lang.Integer qqMemberCount; // qq成员数 db_column: qq_member_count
	private java.lang.Long inPerson; // 录入人 db_column: in_person
	private java.util.Date inTime; // 录入时间（分配的时间） db_column: in_time
	private java.util.Date updateTime; // 更新时间 db_column: update_time

	/**
	 * 用户名
	 */
	private String username;
	/**
	 * 真实姓名
	 */
	private String realName;
	/**
	 * 群分类列表，以逗号分隔
	 */
	private String categories;
	/**
	 * 群分类数组
	 */
	private Long[] categoryArr;
	/**
	 * 群数量
	 */
	private Long groupCount;
	/**
	 * 未添加群数量
	 */
	private Integer toJoinCount;
	/**
	 * 未导入群数量
	 */
	private Integer notImportCount;
	/**
	 * 已被踢群数量
	 */
	private Integer kickedCount;
	/**
	 * 群号
	 */
	private String groupNumber;
	/**
	 * 群名称
	 */
	private String groupName;
	/**
	 * 群分类
	 */
	private Long category;
	/**
	 * 录入人姓名
	 */
	private String inPersonName;
	/**
	 * 多个群id数组
	 */
	private String[] ids;

	/**
	 * 获取群分类名称.
	 * 
	 * @return 群分类名称
	 */
	public String getCategoryName() {
		return DictionaryUtil.getName(DictionaryType.JOB_POSITION.getCode(),
				this.category);
	}

	/**
	 * 将逗号分隔字符串转为数组.
	 * 
	 * @param categories
	 */
	public void setCategories(String categories) {
		this.categories = categories;
		if (categories == null) {
			categoryArr = new Long[0];
			return;
		}
		Set<Long> set = new TreeSet<Long>();
		String[] strs = categories.split(",");
		for (String str : strs) {
			set.add(Long.valueOf(str));
		}
		categoryArr = set.toArray(new Long[set.size()]);
	}

	/**
	 * 获取添加状态名称.
	 * 
	 * @return 添加状态名称
	 */
	public String getAddStatusName() {
		if (this.addStatus == null) {
			return "";
		}
		JoinStatus joinStatus = JoinStatus.get(this.addStatus);
		return joinStatus == null ? "" : joinStatus.getTitle();
	}

	/**
	 * 获取导入状态名称.
	 * 
	 * @return 导入状态名称
	 */
	public String getImportStatusName() {
		if (this.importStatus == null) {
			return "";
		}
		ImportStatus importStatus = ImportStatus.get(this.importStatus);
		return importStatus == null ? "" : importStatus.getTitle();
	}

	/**
	 * 获取被踢状态名称.
	 * 
	 * @return 被踢状态名称
	 */
	public String getKickStatusName() {
		if (this.isKick == null) {
			return "";
		}
		KickStatus kickStatus = KickStatus.get(this.isKick);
		return kickStatus == null ? "" : kickStatus.getTitle();
	}

	public WeiAccountQqGroup() {
	}

	public WeiAccountQqGroup(java.lang.Long id) {
		this.id = id;
	}

}
